﻿#region

using System.Collections;
using System.Collections.Specialized;
using System.Net.Mail;
using System.Text;
using APP_PGM.DB;
using WMAAN.Konfiguracja;
using WMAAN.Uzytki.Kryptografia;

#endregion

namespace APP_PGM.POCZTA
{
    public class Wiadomosci
    {
        public static SerwerPoczty SerwerPoczty;

        #region Szablon wiadomosci

        public static string szablonWiadomosci =
            @"Ten list został wysłany automatycznie. NIE ODPOWIADAJ NA NIEGO. Jeżeli chcesz się z nami skontaktować - skorzystaj z danych na stronie <%StronaInternetowa%>.<br/><br/>Szanowny Użytkowniku,<br/><br/>{0}<br/><br/>Przypominamy, że niniejszy e-mail jest wiadomością automatyczną. NIE ODPOWIADAJ na niego.<br/><br/>Pozdrawiamy - Zespół <%Program%>";

        #endregion

        public static MailMessage ZresetowanoHaslo(DataSet_PGM.uzytkownicyRow rowUzytkownik)
        {
            string temat = string.Format("{0} - Zmiana hasła do konta użytkownika",
                                         KonfiguracjaAplikacji.NazwaAplikacji);

            ListDictionary zmienne = new ListDictionary();
            zmienne.Add("<%Imie%>", rowUzytkownik.imie);
            zmienne.Add("<%Nazwisko%>", rowUzytkownik.nazwisko);
            zmienne.Add("<%NoweHaslo%>", rowUzytkownik.haslo.Deszyfruj());
            zmienne.Add("<%Program%>", KonfiguracjaAplikacji.NazwaAplikacji);
            zmienne.Add("<%StronaInternetowa%>", KonfiguracjaAplikacji.StronaInternetowa);

            const string zawartoscWiadomosci =
                @"
            Informujemy, że na Twoją prośbę zostało zresetowane hasło dostępu do konta w programie <%Program%>. Aby zalogować się do systemu skorzystaj z przesłanego hasła:<br/><br/>-------------------------------<br/><br/><%NoweHaslo%><br/><br/>-------------------------------";

            string tresc = string.Format(szablonWiadomosci, zawartoscWiadomosci);

            MailMessage msg = przygotujWiadomosc(SerwerPoczty.Nazwa, rowUzytkownik.email, temat, zmienne, tresc,
                                                 MailPriority.High);

            return msg;
        }

        private static MailMessage przygotujWiadomosc(string nadawca, string adresat, string temat,
                                                      ListDictionary parametry, string tresc, MailPriority priorytet)
        {
            MailMessage msg = new MailMessage(nadawca, adresat);

            StringBuilder str = new StringBuilder(tresc);

            if (parametry != null)
            {
                foreach (DictionaryEntry param in parametry)
                {
                    str.Replace((string) param.Key, (string) param.Value);
                }
            }

            msg.Subject = temat;
            msg.Priority = priorytet;
            msg.Body = str.ToString();
            msg.IsBodyHtml = true;
            return msg;
        }
    }
}